/**
 * 延迟后更新页面的ref
 * @param initValue 初始值。string
 * @param delay 延迟时间，单位毫秒
 */

const useTimeoutRef = (initValue: string, delay: number) => {
  let timer: number
  // let initValue = 'hello'
  const timeoutRef = customRef((track, trigger) => {
    return {
      get() {
        track() // 持续关注
        return initValue
      },
      set(val) {
        timer && clearTimeout(timer)
        timer = setTimeout(() => {
          initValue = val
          trigger() // 通知Vue timeoutRef 改变了。
        }, delay)
      },
    }
  })

  return { timeoutRef }
}

export  default useTimeoutRef
